package cn.org.xwb.common.encrypt.utils;

import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;

/**
 * SHA 加密工具类
 * https://blog.csdn.net/lileLife/article/details/103581050
 * https://mvnrepository.com/artifact/com.google.guava/guava
 */
public class SHAUtil {

    private SHAUtil() {}

    /**
     * 通过 SHA256 对密码进行加密
     * @param salt 盐
     * @param password 密码
     * @return 加密后的密码
     */
    public static String encryptBySHA256(String salt, String password) {
        return Hashing.sha256().newHasher().putString(salt + password, Charsets.UTF_8).hash().toString();
    }

    /**
     * 验证明文是否为加密密文前的明文
     * @param plainPwd 明文
     * @param secretPwd 密文
     * @return true：是，false：否
     */
    public static Boolean encryptionVerifyBySHA256(String plainPwd, String salt, String secretPwd) {
        // 对明文进行加密
        String plainPwdSecret = encryptBySHA256(salt, plainPwd);
        // 比对明文加密后是否和密文一致
        return plainPwdSecret.equals(secretPwd);
    }

}
